package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.AuthTreeButtonVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.AuthTreeMenuButtonCheckIdVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.AuthTreeMenuVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.PlatformMemberDetailQueryButtonVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.RoleUpdateButtonVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.request.RoleUpdateVO;
import com.ssy.lingxi.member.merchant.model.vo.validate.request.MemberValidateVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 平台后台 - 会员维护 - 会员详情 - 权限信息服务接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-07-16
 */
public interface IPlatformMemberDetailAuthService {
    /**
     * 查询会员详情 - 会员权限信息 - 获取会员菜单权限
     * @param headers HttpHeaders信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<List<AuthTreeMenuVO>> getMemberDetailAuthMenu(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 查询会员详情 - 会员权限信息 - 获取会员菜单关联的按钮列表
     * @param headers HttpHeaders信息
     * @param queryButtonVO 接口参数
     * @return 操作结果
     */
    Wrapper<List<AuthTreeButtonVO>> getMemberDetailAuthButton(HttpHeaders headers, PlatformMemberDetailQueryButtonVO queryButtonVO);

    /**
     * 查询左侧树形权限菜单中勾选的Id列表
     * @param headers HttpHeaders信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<AuthTreeMenuButtonCheckIdVO> getTreeCheckIds(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 根据左侧勾选的菜单，查询右侧勾选的按钮Id列表
     * @param headers HttpHeaders信息
     * @param queryButtonVO 接口参数
     * @return 操作结果
     */
    Wrapper<AuthTreeMenuButtonCheckIdVO> getButtonCheckIds(HttpHeaders headers, PlatformMemberDetailQueryButtonVO queryButtonVO);

    /**
     * 更新左侧菜单权限
     * @param headers Http头部信息
     * @param updateVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateMemberRole(HttpHeaders headers, RoleUpdateVO updateVO);

    /**
     * 更新权限菜单关联按钮
     * @param headers HttpHeaders信息
     * @param updateButtonVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateMemberRoleButton(HttpHeaders headers, RoleUpdateButtonVO updateButtonVO);
}
